home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Tutorial / Cookbook / 16.open_file / MyObject.m < prev    next >
Text File  |  1995-06-12  |  1KB  |  66 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "MyObject.h"
  5.  
  6. @implementation MyObject
  7.  
  8. + new
  9. {
  10.   self = [super new];
  11.   openReq = [OpenPanel new];
  12.   return self;
  13. }
  14.  
  15. - showError: (char *)errorMessage
  16. {
  17.   NXRunAlertPanel("Error", errorMessage,"OK",NULL,NULL);
  18. }
  19.  
  20. // openRequest: opens a new file. It puts up a open panel, and, if the user
  21. // doesn't cancel, it reads the specified archive file. If the selected file
  22. // is not a proper archive file, then openRequest: will complain.
  23.  
  24. - openRequest:sender
  25. {
  26.     const char *fileName;
  27.     const char *const types[4] = {"data",NULL};
  28.     int ok;
  29.  
  30.     if ([openReq runModalForTypes:types] && (fileName =[openReq filename])) {
  31.     [self openFile:fileName];
  32.     }
  33.     else
  34.     [self showError:"No file chosen or could not open file"];
  35.     return self;
  36. }
  37.  
  38. -(int) openFile:(const char *)fileName
  39. {
  40.   int i=0;
  41.   char line[MAX_CHARS_PER_LINE];
  42.   char string[MAX_CHARS_PER_LINE][MAX_LINES];
  43.   int value[MAX_LINES];
  44.   FILE *input_fp;
  45.   printf("Opening File = %s\n", fileName);
  46.   
  47.   if (( input_fp = fopen(fileName, "r") ) == NULL ) {
  48.      [self showError:"Could not open file"];
  49.      fprintf(stderr, "File: %s Could not be opened.\n", fileName);
  50.      return NO;
  51.   }
  52.   
  53.   while (fgets(line, MAX_CHARS_PER_LINE, input_fp) != NULL)
  54.   {
  55.      i++;
  56.      if (i >= MAX_LINES) break;
  57.      sscanf(line, "%d %s", &value[i], string[i]);
  58.      printf("  value = %d label = %s\n", value[i], string[i]);
  59.   }
  60.   printf("%d data points read\n", i);
  61.   fclose(input_fp);
  62.   return YES;
  63.  
  64. }
  65.  
  66.